<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>私有字段</title>
</head>

<body>
    <script>
        // Public 属性可以从类的外部或者子类访问，protected 属性只能被子类访问，private 属性只能被类内部访问。
        // avaScript 从 ES6 开始支持类语法，但直到现在才引入了私有字段。要定义私有属性，必须在其前面加上散列符号：#。
        class Flower {
            #leaf_color = "green";
            constructor(name) {
                this.name = name;
            } 

            get_color() {
                return this.#leaf_color;
            }           
        }

        const orchid = new Flower("orchid");

        console.log(orchid.get_color()); // 输出：green
        // 报错：SyntaxError: Private field '#leaf_color' must be declared in an enclosing class
        // 即语法错误：私有字段"#leaf_color"必须在封闭类中声明
        // console.log(orchid.#leaf_color) 
    </script>
</body>

</html>